package com.woniu.liuzhougov.fileManage.controller;

import com.woniu.liuzhougov.fileManage.pojo.FileData;
import com.woniu.liuzhougov.fileManage.dto.VO;
import com.woniu.liuzhougov.fileManage.pojo.FileType;
import com.woniu.liuzhougov.fileManage.pojo.Item;
import com.woniu.liuzhougov.fileManage.service.FileService;
import com.woniu.liuzhougov.fileManage.service.FileTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @description: 文件表显示
 * @author: Arvin
 * @create: 2019-04-22 10:05
 **/

@Controller
@RequestMapping("fileshow")
public class FileShowController {

    @Autowired
    private FileService fileService;

    @Autowired
    private FileTypeService fileTypeService;

    /**
     * 文件列表
     * @param currentPage
     * @param pageSize
     * @return
     */
    @RequestMapping("/fileList")
    @ResponseBody
    public Map fileList(@RequestParam(value = "page",defaultValue = "1",required = false)Integer currentPage,
                         @RequestParam(value = "rows",defaultValue = "10",required = false)Integer pageSize){
        //没有使用currentPage，pageSize
        //一次查出所有数据
        List<FileData> list = fileService.findAllFileData();
        List<VO> files = new ArrayList<>();

        for (FileData fileData : list) {

            String fileName = fileData.getFileName().substring(fileData.getFileName().indexOf(",")+1);
            VO vo = new VO();
            vo.setFileId(fileData.getFileId());
            vo.setFileName(fileName);
            vo.setFileSize(fileData.getFileSize());
            vo.setFileTypeName(fileData.getFileType().getTypeName());
            vo.setUserName(fileData.getUser().getUserName());
            vo.setItemName(fileData.getItem().getItemName());
            vo.setFileTime(fileData.getFileTime());
            vo.setFileState(fileData.getFileState());
            files.add(vo);
        }

        Map map = new HashMap();
        map.put("files",files);
        return map;
    }

    /**
     * 文件名查询
     * @param fileName
     * @return
     */
    @RequestMapping("/search")
    @ResponseBody
    public Map selLike(String fileName){

        //System.out.println(fileName);
        List<FileData> list = fileService.searchListByFileName(fileName);
        List<VO> files = new ArrayList<>();

        for (FileData fileData : list) {    //foreach添加不规范

            String fileName2 = fileData.getFileName().substring(fileData.getFileName().indexOf(",")+1);
            VO vo = new VO();
            vo.setFileId(fileData.getFileId());
            vo.setFileName(fileName2);
            vo.setFileSize(fileData.getFileSize());
            vo.setFileTypeName(fileData.getFileType().getTypeName());
            vo.setUserName(fileData.getUser().getUserName());
            vo.setItemName(fileData.getItem().getItemName());
            vo.setFileTime(fileData.getFileTime());
            vo.setFileState(fileData.getFileState());
            files.add(vo);
        }

        Map map = new HashMap();
        map.put("files",files);
        return map;
    }

    /**
     * 查询所有事项
     * @return
     */
    @RequestMapping("/findMsg")
    @ResponseBody
    public List<Item> findMsg(){

        List<Item> list = fileService.findAllSx();

        List<Item> itemlist = new ArrayList<>();
        for (Item item : list) {
            if (item.getItemStatusId() == 1){
                itemlist.add(item);
            }
        }


        return itemlist;
    }

    @RequestMapping("/findFileData")
    @ResponseBody
    public VO findFileData(Integer fileId,boolean checked){
        FileData fileData = fileService.finFiledata(fileId);
        FileType fileType = fileTypeService.findFileTypeNameById(fileData.getFileType().getFileTypeId());


        VO vo = new VO();
        vo.setFileContent(fileData.getFileContent());
        vo.setFileTypeName(fileType.getTypeName());
        vo.setFileId(fileData.getFileId());
        //vo.setItemName();
        vo.setFileState(fileData.getFileState());
        vo.setFileTime(fileData.getFileTime());
        vo.setFileName(fileData.getFileName().substring(fileData.getFileName().indexOf(",")+1));
        if (vo.getFileState().equals("公开")){  //公开
            vo.setChecked(true);
        }else {
            vo.setChecked(false);
        }

        return vo;
    }

    @RequestMapping("/findFileType")
    @ResponseBody
    public List<FileType> findFileType(){

        return fileTypeService.findAll();
    }

}
